from pymodbus.client.tcp import ModbusTcpClient

# 配置 Modbus 服务器的 IP 地址和端口号
MODBUS_SERVER_IP = "192.168.1.199"  # 替换为目标设备的 IP 地址
MODBUS_SERVER_PORT = 502  # 默认的 Modbus TCP 端口号

# 配置寄存器的地址和需要写入的值
REGISTER_ADDRESS = 1  # 寄存器地址
VALUE_TO_WRITE = 1  # 要写入的值

# 创建 Modbus 客户端实例
client = ModbusTcpClient(MODBUS_SERVER_IP, port=MODBUS_SERVER_PORT)

# 连接到 Modbus 服务器
if not client.connect():
    print(f"无法连接到 Modbus 服务器：{MODBUS_SERVER_IP}:{MODBUS_SERVER_PORT}")
else:
    try:
        # 向寄存器写入值
        # 这里使用的是 write_register 方法，针对单个寄存器
        result = client.write_registers(REGISTER_ADDRESS, VALUE_TO_WRITE)

        # 判断写入操作是否成功
        if result.isError():
            print(f"写入失败: {result}")
        else:
            print(f"成功将值 {VALUE_TO_WRITE} 写入到寄存器 {REGISTER_ADDRESS}")
    except Exception as e:
        print(f"发生错误：{e}")
    finally:
        # 关闭客户端连接
        client.close()
